package com.cloud.system.project.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cloud.system.project.model.dto.MenuDTO;
import com.cloud.system.project.model.dto.MenuTreeDTO;
import com.cloud.system.project.model.entity.Menu;

import java.util.List;

/**
 * <p>
 * 菜单表 服务类
 * </p>
 *
 * @author Sam
 * @since 2021-04-13
 */
public interface IMenuService extends IService<Menu> {

    /**
     * 获取权限树
     *
     * @param status
     * @return
     */
    List<MenuTreeDTO> getTreeList(Integer status);

    /**
     * 获取所有菜单 返回树
     *
     * @param status
     * @return
     */
    List<MenuTreeDTO> getTreeAllPermMenus(Integer status);

    /**
     * 获取用户权限菜单 返回树
     *
     * @param uid
     * @return
     */
    List<MenuTreeDTO> getTreeUserPermMenus(String uid);

    /**
     * 获取用户权限菜单 返回树
     *
     * @param uid
     * @return
     */
    List<MenuTreeDTO> getUserPermMenus(String uid);

    /**
     * 获取用户权限菜单 根据类型
     *
     * @param uid
     * @param types
     * @return
     */
    List<MenuTreeDTO> getUserPermMenus(String uid, List<Integer> types);

    /**
     * 根据角色id查询菜单信息
     *
     * @param roleId
     * @return
     */
    List<MenuDTO> getListByRoleId(String roleId);

    /**
     * 根据id删除菜单 包括角色关系
     *
     * @param menuId
     */
    void delMenu(String menuId);
}
